General-Purpose Modules and Deeper
タイトルのうまい訳を考えられなかった…radish-miyazaki.icon
インタフェースを汎用的(general-purpose)にするか専門的(special-purpose)にするか
筆者の経験則では、モジュールのインタフェースは「ある程度汎用的に作る」のがベスト
「ある程度汎用的」: 機能は現在のニーズを満たしているが、インタフェースはそうである必要はないということ
「ある程度」といのがミソ
汎用的すぎると、現在のニーズを満たすことができない
汎用的なインタフェースの利点
インタフェースがシンプルだと知っておくべき情報が少なくて済むので、認知的負荷も軽減できる ソフトウェア設計で重要な要素のひとつは、誰が何を・いつ知る必要があるかを決めることである
詳細が重要である場合、それをできるだけ明示的かつ明確にするのが良い
汎用的なインタフェース と 専用的なインタフェース の正しいバランスを見つける方法
現在のニーズをすべて満足する、最もシンプルなインタフェースはなにか?
たとえばモジュール全体の機能を低下させることなくメソッド数を減らすならば、汎用的なメソッドを作成することになる
ただし、メソッドの数を減らすのに意味があるのは、個々のメソッドがシンプルな場合においてのみ
メソッドに引数を追加する必要がある場合などは、これに当てはまらない
どのような場面で使われるか?
メソッドが特定の用途でしか使われないならば、それは汎用的ではない
いくつかのメソッドを、1つの汎用メソッドで置き換えることができないか考える
現在のニーズを満たすために、そのインタフェースは簡単に使えるか?
インタフェースがあまりにもシンプルで汎用的でないか
ニーズを満たすために多くの追加コードを書かなければならない場合、それは汎用的すぎる
hr.icon
要約
汎用的なインタフェースは、専門的なインタフェースよりも多くの利点がある
シンプルで、深いメソッドが少ない傾向にある
クラス間の関係も明確
必要な情報がインタフェースに現れないので、不明瞭が増大するためradish-miyazaki.icon モジュールをある程度汎用的なものにすることは、システム全体の複雑さを軽減するベストプラクティスの1つ